﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CANO.Data.DAOs
{
	public class LugarInfluenciaDAO
	{
		public int LugarInfluenciaID { get; set; }
		public string LugarInfluencia { get; set; }


		public static List<LugarInfluenciaDAO> getAll()
		{
			List<LugarInfluenciaDAO> listLugarInfluencia = new List<LugarInfluenciaDAO>();

			using (dcCanoDataContext context = new dcCanoDataContext())
			{

				var lugarInfluenciaCollection =
					from l in context.LugarInfluencias
					select l;

				foreach (var item in lugarInfluenciaCollection)
				{
					LugarInfluenciaDAO lugarInfluencia = new LugarInfluenciaDAO();
					lugarInfluencia.LugarInfluenciaID = item.LugarInfluenciaID;
					lugarInfluencia.LugarInfluencia = item.LugarInfluencia1;
					listLugarInfluencia.Add(lugarInfluencia);
				}
				return listLugarInfluencia;
			}
		}

        public static LugarInfluenciaDAO GetById(int LugarInfluenciaId)
        {
            using (dcCanoDataContext context = new dcCanoDataContext())
            {

                var lugarInfluencia = (
                    from li in context.LugarInfluencias
                    where li.LugarInfluenciaID == LugarInfluenciaId
                    select li).SingleOrDefault();


                LugarInfluenciaDAO retVal = new LugarInfluenciaDAO();
                retVal.LugarInfluenciaID = lugarInfluencia.LugarInfluenciaID;
                retVal.LugarInfluencia = lugarInfluencia.LugarInfluencia1;

                return retVal;

            }
        }

		public static void create(string pLugarInfluencia)
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
				LugarInfluencia newLugarInfluencia = new LugarInfluencia();
				newLugarInfluencia.LugarInfluencia1 = pLugarInfluencia;
				newLugarInfluencia.LugarInfluenciaID = getId();

				context.LugarInfluencias.InsertOnSubmit(newLugarInfluencia);
				context.SubmitChanges();
			}
		}
		public static int createNew(string pLugarInfluencia)
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
				LugarInfluencia newLugarInfluencia = new LugarInfluencia();
				newLugarInfluencia.LugarInfluencia1 = pLugarInfluencia;
				newLugarInfluencia.LugarInfluenciaID = getId();

				context.LugarInfluencias.InsertOnSubmit(newLugarInfluencia);
				context.SubmitChanges();
				return newLugarInfluencia.LugarInfluenciaID;
			}
		}

		public static int GetIdByName(string sLugarInfluencia)
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
                var lugarInfluencia = (
                   from li in context.LugarInfluencias
                   where li.LugarInfluencia1 == sLugarInfluencia
                   select li).SingleOrDefault();


                LugarInfluenciaDAO retVal = new LugarInfluenciaDAO();
                retVal.LugarInfluenciaID = lugarInfluencia.LugarInfluenciaID;
                retVal.LugarInfluencia = lugarInfluencia.LugarInfluencia1;

                return retVal.LugarInfluenciaID;
			}
		}

		private static int getId()
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
				var lugarInfluenciaColl =
					from tt in context.LugarInfluencias
					select tt.LugarInfluenciaID;

				return lugarInfluenciaColl.Max() + 1;
			}
		}

        public static void Update(LugarInfluenciaDAO liUpdate)
        {
            using (dcCanoDataContext context = new dcCanoDataContext())
            {
                var tt =
                    (from t in context.LugarInfluencias
                     where t.LugarInfluenciaID == liUpdate.LugarInfluenciaID
                     select t).Single();

                tt.LugarInfluencia1 = liUpdate.LugarInfluencia;

                context.SubmitChanges();
            }
        }

        public static int Delete(int LugarInfluenciaId)
        {
            try
            {
                using (dcCanoDataContext context = new dcCanoDataContext())
                {
                    var li =
                        (from l in context.LugarInfluencias
                         where l.LugarInfluenciaID == LugarInfluenciaId
                         select l).Single();

                    //tt.Status = 1; //Delete
                    context.LugarInfluencias.DeleteOnSubmit(li);
                    context.SubmitChanges();
                    return 1;
                }
            }
            catch (Exception)
            {
                return 0;
            }


        }
	}
}
